Sagen wir, wir wollen die Zahlen von 0 bis 10 in der Konsole ausgeben. Mit diesem (Java) Code wäre dies möglich:
Aber das wäre enorm unpraktisch, vor allem, wenn man das für 100 Zeilen machen müsste. Es muss einen schnelleren Weg geben.
Darum gibt es sogenannte Wiederholungsanweisungen, die einen gewissen Code eine gewisse Anzahl an Malen ausführen können.
while
führt den Code, der innerhalb der {
}
geschweiften Klammern steht, so lange aus, bis die in den (
)
normalen Klammern hinter dem while
stehende
Bedingung nicht mehr true
ist. Hierbei wird die Bedingung schon vor dem ersten Betreten geprüft, das heißt, sie wird gar nicht erst betreten, wenn die Bedingung false
ist.
In dem Beispiel hier direkt darüber würden die Zahlen von 0 bis 4 ausgegeben werden.
Zu Beginn hat x
den Wert 0. Nun treffen wir auf die Schleife: Die Bedingung wird überprüft: x < max
, also in diesem Fall 0 < 5
, was true
zurückgibt.
Das heißt, die Schleife wird betreten: x
wird in die Konsole ausgegeben (System.out.println(x)
) und um 1 erhöht: x = x + 1;
Nun treffen wir auf das Schleifenende und überprüfen erneut die Schleifenbedingung: ist x
noch immer kleiner als max
? In diesem Fall noch immer ja: 1 < 5
,
also wird die Schleife erneut durchlaufen.
Dies wird so lange wiederholt, bis die Bedingung nicht mehr true
, sondern false
ist. In unserem Beispiel wäre dies bei x = 5
der Fall: 5 < 5
ist false
.
Damit wird die Schleife verlassen und der Code danach wird ausgeführt.
do while
funktioniert so ähnlich wie while
, mit dem Unterschied, dass die Bedingung nicht schon beim ersten Betreten der Schleife, sondern nur die ganzen Male danach überprüft wird.
Ein Beispiel, das den unterschied zur normalen while
Schleife zeigt:
Auch hier werden die Zahlen von 0 bis 4 ausgegeben. Die Bedingung in der Klammer (x < max && x != 0
) sagt zwar aus, dass x
nicht 0 sein darf, was es ja beim Betreten der
Schleife ist, aber die Bedingung wird ja nicht beim Betreten, sondern erst nach der ersten Ausführung geprüft. Damit wurde x
schon um 1 erhöht, wenn man bei der
Bedingung ankommt und x != 0
ist true
. x < max
ist genau wie bei dem anderen Beispiel so lange true
wie x
noch kleiner als 5 ist.
Diese Schleifenart ist diejenige, die man in der Realität am Häufigsten verwendet. Sie führt die angegebenen Anweisungen eine gewisse Anzahl an malen aus.
Auch dieses Beispiel würde die Zahlen von 0 bis 4 ausgeben.
Die for
-Schleife hat in der Klammer drei Parameter, die je von einem ;
getrennt werden.
Der Erste wird vor der ersten Ausführung ausgeführt, hier initialisiert er eine Variable i
mit dem Wert 0.
Der Zweite ist die Bedingung, die, wie bei while
, vor jedem Schleifendurchlauf geprüft wird. Sollte hier also i
größer oder gleich 5 sein, wird die Schleife abgebrochen.
Der Dritte wird nach jedem Schleifendurchlauf ausgeführt, das heißt, i
wird jedes mal, wenn das Ende der Schleife erreicht wird, um 1 erhöht.
Also: Beim Betreten wird i
auf 0 gesetzt und i < 5
(0 < 5
= true
) wird überprüft. Der Schleifeninhalt wird ausgeführt. i
wird um 1 erhöht (i++
), die Bedingung
i < 5
(1 < 5
= true
) wird überprüft und der Schleifeninhalt wird ausgeführt. Dies wird so lange wiederholt, bis die Bedingung false
ist.
Mit for
lässt sich z.B. ein Array (also ein Feld) sehr einfach durchlaufen:
Damit z.B. wird jeder Eintrag in dem Array ausgegeben.
Es gibt zwar noch mehr, mächtigere Schleifenarten (wie for each
oder Iterator
s) aber diese sind hier nicht relevant.
Frage 1
Was ist der Unterschied von while
und do while
?
Frage 2
Was sind die drei Parameter der for
-Schleife?
Frage 3
Erstelle von jeder Art eine Schleife, die die Zahlen von 2 bis 6 ausgibt (versuche kreativ zu sein!)
Frage 4
Schreibe eine for
Schleife, die das Beispiel ganz am Anfang ersetzen würde (die ganzen System.out
s)
Frage 5
Schreibe eine for
Schleife, die jeden Wert eines integer arrays werte
um 1 erhöht und dann ausgibt